﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using V5_Common;
using V5_Model;
using V5_BLL;
using V5_EShop.Pay;
using Gateway;

namespace V5_EShop._Template.Default
{
    public partial class Pay : System.Web.UI.Page
    {
        int _OrderId = 0;
        ModelProductOrder order = new ModelProductOrder();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                _OrderId = Input.SetInt(Request["OrderID"]);
                if (_OrderId > 0)
                {
                    Bind_Pay(_OrderId);
                }
            }
        }

        private void Bind_Pay(int OrderID)
        {
            order= new BLLProductOrder().GetModel(OrderID);
            switch (order.PaymentType)
            {
                case 2:
                    HaoduoPay haoduo = new HaoduoPay();
                    Response.Redirect("http://pay.kuaihaoduo.com:8080/fastpay/transaction.action?"+haoduo.CreateUrl(
                        "124578",
                        order.OrderNo,
                        "商品",
                        "1000000",
                        "sale",
                        "/index.aspx",
                        "34samu",
                        "123456789",
                        "md5",
                        "haha"
                        ));
                    break;
                case 3:
                    Bind_Alipay();
                    break;
                case 4:
                    break;
                case 5:
                    break;
                default:
                    Response.Redirect("/index.aspx");
                    break;
            }
        }

        /// <summary>
        /// 支付宝
        /// </summary>
        private void Bind_Alipay()
        {
            //业务参数赋值；
            string gateway = "https://www.alipay.com/cooperate/gateway.do?";	//支付接口
            string service = "create_direct_pay_by_user";                       //服务名称，这个是识别是何接口实现何功能的标识，请勿修改

            string seller_email = "";                     //商家签约时的支付宝帐号，即收款的支付宝帐号
            string sign_type = "MD5";                                           //加密类型,签名方式“不用改”
            string key = "";                    //安全校验码，与partner是一组，获取方式是：用签约时支付宝帐号登陆支付宝网站www.alipay.com，在商家服务我的商家里即可查到。
            string partner = "";                                //商户ID，合作身份者ID，合作伙伴ID
            string _input_charset = "utf-8";                                    //编码类型，完全根据客户自身的项目的编码格式而定，千万不要填错。否则极其容易造成MD5加密错误。

            string show_url = "http://www.alipay.com/";                         //展示地址，即在支付页面时，商品名称旁边的“详情”的链接地址。

            string out_trade_no = "2001101001";                       //客户自己的订单号，订单号必须在自身订单系统中保持唯一性
            string subject = "这是我的产品啊";                            //商品名称，也可称为订单名称，该接口并不是单一的只能买一样东西，可把一次支付当作一次下订单
            string body = "这是我的产品备注";                                  //商品描述，即备注
            string total_fee = "这是我的产品总金额";                        //商品价格，也可称为订单的总金额

            //服务器通知url（Alipay_Notify.aspx文件所在路经），必须是完整的路径地址
            string notify_url = "http://www.shincl.com/Pay/Alipay_Notify.aspx";
            //服务器返回url（Alipay_Return.aspx文件所在路经），必须是完整的路径地址
            string return_url = "http://www.shincl.com/Pay/Alipay_Return.aspx";

            //构造数组；
            //以下数组即是参与加密的参数，若参数的值不允许为空，若该参数为空，则不要成为该数组的元素
            string[] para ={
        "service="+service,
        "partner=" + partner,
        "seller_email=" + seller_email,
        "out_trade_no=" + out_trade_no,
        "subject=" + subject,
        "body=" + body,
        "total_fee=" + total_fee, 
        "show_url=" + show_url,
        "payment_type=1",
        "notify_url=" + notify_url,
        "return_url=" + return_url,
        "_input_charset="+_input_charset
        };

            //支付URL生成
            string aliay_url = AliPay.CreatUrl(
                //gateway,//GET方式传递参数时请去掉注释
                para,
                _input_charset,
                sign_type,
                key
                );

            //以下是GET方式传递参数
            //Response.Redirect(aliay_url);


            //以下是POST方式传递参数
            Response.Write("<form name='alipaysubmit' method='post' action='https://www.alipay.com/cooperate/gateway.do?_input_charset=utf-8'>");
            Response.Write("<input type='hidden' name='service' value=" + service + ">");
            Response.Write("<input type='hidden' name='partner' value=" + partner + ">");
            Response.Write("<input type='hidden' name='seller_email' value=" + seller_email + ">");
            Response.Write("<input type='hidden' name='out_trade_no' value=" + out_trade_no + ">");
            Response.Write("<input type='hidden' name='subject' value=" + subject + ">");
            Response.Write("<input type='hidden' name='body' value=" + body + ">");
            Response.Write("<input type='hidden' name='total_fee' value=" + total_fee + ">");
            Response.Write("<input type='hidden' name='show_url' value=" + show_url + ">");
            Response.Write("<input type='hidden' name='return_url' value=" + return_url + ">");
            Response.Write("<input type='hidden' name='notify_url' value=" + notify_url + ">");
            Response.Write("<input type='hidden' name='payment_type' value=1>");
            Response.Write("<input type='hidden' name='sign' value=" + aliay_url + ">");
            Response.Write("<input type='hidden' name='sign_type' value=" + sign_type + ">");
            Response.Write("</form>");
            Response.Write("<script>");
            Response.Write("document.alipaysubmit.submit()");
            Response.Write("</script>");
        }
    }
}
